// characters模板
class subComments {
    // 传入mongoose对象
    constructor(mongoose) {
        this.mongoose = mongoose
        this.Schema = mongoose.Schema
        // CharactersInfo
        this.subComments = new this.Schema({
            id: Number,              // 什么内容的(比如某张cos图)的id
            commentId: Number,              // 什么内容的(比如某张cos图)的id
            contents: String,        // 内容 
            date: Date,        // 创建时间
            priaseNumber: Number,    // 点赞数
            userId: Number,
            priasePeople: Array,
            toWhoId: Number,
            name:String
        })
        this.modal = this.mongoose.model('Subcomment', this.subComments)
    }
    // 返回查询结果
    // @paras1 查询的id 
    getSubComment(body) {
        // 根据id查询评论 时间排序前8条
        return this.modal.find({ commentId: body.commentId }).sort({ id: 1 }).skip(10 * body.page).limit(10)
    }
    // 增加删除 评论 
    // @paras1 增加的id 评论内容
    insertSubComment(body) {
        var subComment = new this.modal({
            id: Math.random() * 100000000000000000,              // 什么内容的(比如某张cos图)的id
            commentId: body.commentId,              // 什么内容的(比如某张cos图)的id
            contents: body.contents,        // 内容 
            date: new Date(),        // 创建时间
            priaseNumber: 0,    // 点赞数
            userId: body.userId,
            priasePeople: [],
            toWhoId: body.toWhoId,
            name:body.name
        })
        return subComment.save((err, data) => {
            if (err) { console.log(err) }
            else { return true }
        })
    }
    // @paras1 删除的id
    delSubComment(id) {
        // findAndModify强调原子性 也就是获取然后增加 这类很好 自然速度不如update快
        return this.modal.deleteOne({ id: id }, (err, data) => {
            if (err) { console.log(err) }
            else { return null }
        })
    }
    // 评论点赞 在该评论的priasePeople中加入点赞id
    // @paras1 点赞评论的id
    // @paras2 点赞者的id
    priase(id, priaseId) {
        return this.modal.updateOne({ id: id, priasePeople: { $ne: priaseId } }, { $push: { priasePeople: priaseId }, $inc: { priaseNumber: 1 } }, (err, data) => {
            if (err) { console.log(err) }
            else {
                return null
            }
        })
    }
    // 取消点赞
    cancelPriase(Id, priaseId) {
        return this.modal.updateOne({ Id: Id }, { $pull: { priasePeople: priaseId }, $inc: { priaseNumber: -1 } }, (err, data) => {
            if (err) { console.log(err) }
            else { return null }
        })
    }
}
module.exports = subComments

